package com.opages.platform.extension;

/**
 * 扩展工厂，有本地实现与spring实现
 */
public interface ExtensionFactory {

    /**
     * 获取扩展点
     * @param type 扩展接口
     * @return 生成的实例.
     */
    <T> T getExtension(Class<T> type);
    /**
     * 获取扩展点
     * @param type 扩展接口
     * @param name 扩展名称
     * @return 生成的实例.
     */
    <T> T getExtension(Class<T> type, String name);
    /**
     * 获取扩展点
     * @param type 扩展接口
     * @param name 扩展名称
     * @param argTypes 参数类型
     * @param args 参数
     * @return 生成的实例.
     */
    <T> T getExtension(Class<T> type, String name, Class[] argTypes, Object[] args);

}
